package org.example.myleet.p665;

public class Solution {
    /**
     * 1 ms
     */
    public boolean checkPossibility(int[] nums) {
        if (nums.length == 1) {
            return true;
        }
        int declineCount = 0, n = nums.length;
        for (int i=1; i<n; i++) {
            if (nums[i-1] > nums[i]) {
                //遇到破坏非递减的情况，记录下降的次数+1
                ++declineCount;
                if (declineCount > 1) {
                    //出现多于1次下降，没法处理
                    return false;
                }
                if (i > 1) {
                    //观察i-1位置，若左边不大于右边，则i-1位置变成右边的值即可，否则右边的值要变成i-1位置的值（因为i-1左边的值不能也一起改变）
                    if (nums[i-2] <= nums[i]) {
                        nums[i-1] = nums[i];
                    } else {
                        nums[i] = nums[i-1];
                    }
                }
            }
        }
        return true;
    }
}
